Re: Model field with default value and choices is always reported as changed, even if unchanged

2015-02-27 Thread Carsten Fuchs

Am 26.02.2015 um 19:06 schrieb Carsten Fuchs:

The expected output is `False`,[...]


Just for future reference, this is continued here:
https://code.djangoproject.com/ticket/24428

Best regards,
Carsten

--
You received this message because you are subscribed to the Google Groups "Django 
users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/54F0DEB6.4010008%40cafu.de.
For more options, visit https://groups.google.com/d/optout.


Re: Model field with default value and choices is always reported as changed, even if unchanged

2015-02-26 Thread Carsten Fuchs

Hi,

Am 25.02.2015 um 19:11 schrieb Carsten Fuchs:

the parent model's History view claims that field "monat" of TestModel has been 
changed,


I got at least a little bit further: This is easily reproducible in a 
minimal project/app test case with SQLite exactly as described in 
Django's intro tutorial 01. This is the entire contents of my test app's 
`models.py` file:



# -*- coding: utf-8 -*-
from django.db import models

def VormonatsMonat():
return 1

MONTHS_CHOICES = (
(1, "Jan"),
(2, "Feb"),
)

class Choice(models.Model):
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
monat = models.IntegerField(default=VormonatsMonat, 
choices=MONTHS_CHOICES)



Then, at the `./manage.py shell` prompt (creating a Choice instance is 
omitted here):


>>> from django.forms import ModelForm
>>> from TestApp.models import Choice
>>> class ChoiceForm(ModelForm):
... class Meta:
... model = Choice
... fields = ["choice_text", "votes", "monat"]
...
>>> ch =  Choice.objects.get(pk=1)
>>> chv = Choice.objects.values().get(pk=1)
>>> ch

>>> chv
{'monat': 1, 'choice_text': u'just a test', 'votes': 0, u'id': 1}
>>> ChoiceForm(chv, initial=chv, instance=ch).has_changed()
True


The expected output is `False`, which is (in a new shell session) in 
fact obtained whenever the definition of field `monat` is slightly 
changed, e.g. to a constant default value rather than a callable, or 
with no choices.


Any thoughts please?

Best regards,
Carsten

--
You received this message because you are subscribed to the Google Groups "Django 
users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/54EF60B7.1010204%40cafu.de.
For more options, visit https://groups.google.com/d/optout.


Model field with default value and choices is always reported as changed, even if unchanged

2015-02-25 Thread Carsten Fuchs

Hi all,

please consider this model definition:


def PrevMonth():
h = date.today()
return 12 if h.month == 1 else h.month-1

MONTHS_CHOICES = (
(1, "Januar"), (2, "Februar"), (3, "März"), (4, "April"),
(5, "Mai"), (6, "Juni"), (7, "Juli"), (8, "August"),
(9, "September"), (10, "Oktober"), (11, "November"), (12, "Dezember")
)

class TestModel(models.Model):
key   = models.ForeignKey(ParentModel, db_column='key', to_field='key')
monat = models.SmallIntegerField(default=PrevMonth, 
choices=MONTHS_CHOICES)



I use TestModel in the Django Admin "inline", i.e. as the related model 
of ParentModel.


The problem is that whenever an existing ParentModel instance with 
existing TestModel inlines is saved, the parent model's History view 
claims that field "monat" of TestModel has been changed, even if it 
hasn't. (If many instances of TestModel refer to the same parent model 
instance, the claim is made for each TestModel instance.)


The problem disappears if in the definition of field `monat`, either 
parameter `default` or `choices` is omitted. It also disappears if I 
change the definition to use a constant for the default value, e.g. 
`default=6`.


Does someone know what may be causing this, or how (else) it can be avoided?

Best regards,
Carsten

--
You received this message because you are subscribed to the Google Groups "Django 
users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/54EE1059.4040901%40cafu.de.
For more options, visit https://groups.google.com/d/optout.