After cutting my code to a minimum, it still doesn't work. I always get a hint:
(Hidden field id) Select a valid choice. That choice is not one of the available choices.
Here's what my forms look like:
class ChangeItemForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(ChangeItemForm, self).__init__(*args, **kwargs)
for key in self.fields:
self.fields[key].required = False
class Meta:
model = Item
fields = ('name','tags','no')
ChangeItemFormset=modelformset_factory(Item,extra=0,form=ChangeItemForm)
and my view is as follows:
def manage_view(request):
if request.method=='POST':
itemforms=ChangeItemFormset(request.POST,
queryset=Item.objects.filter(creator=request.user))
else:
itemforms=ChangeItemFormset(queryset=Item.objects.filter(creator=request.user))
messages.info(request,str(itemforms.is_valid()))
context=RequestContext(request)
context.update({'formset':itemforms,
})
return render_to_response('sonitem/test_forms.html',context)
and in my template I do this:
<form action="." method="post" name="upload_image">
<button type="submit" name="action" value="change">change</button>
{%for form in formset.forms%}
{{form}}
{%endfor%}
{{formset.management_form}}
{%csrf_token%}
</form>
messages:
{%for message in messages%}
<div>{{message}}</div>
{%endfor%}
Here it is. I have no clue where to look next. Maybe I'll do it wrong? At least I'm sure that for some reason I missed the important part of how forms work ... if someone can help me.
, - . , , Item2, , . Item2 , . : (, - ) modelfields, , ?
Item2, :
class Item2(models.Model):
name=models.CharField(max_length=50)
tags=TagField()
no=models.IntegerField(blank=True,null=True)
creator = models.ForeignKey(User, related_name='creator')
edit2:
, : , - model.IntegerField. , .
Item :
class Item(models.Model):
PRIVATE_STATUS=1
PUBLIC_STATUS=2
RELEASED_STATUS=3
STATUS_CHOICES=((PRIVATE_STATUS ,'private'),
(PUBLIC_STATUS ,'public' ),
(RELEASED_STATUS,'released'))
status = models.IntegerField(choices=STATUS_CHOICES,default=PRIVATE_STATUS)
public = PublicItemManager()
objects = models.Manager()
name=models.CharField(max_length=50)
tags=TagField()
no=models.IntegerField(blank=True,null=True)
file=models.FileField()
creator = models.ForeignKey(User, related_name='creator')
status=models.IntegerField(blank=True,null=True)
. ( ) ? , . , .
, , , . , , ChangeItemForm, .
3:
, , :
class PublicItemManager(models.Manager):
def get_query_set(self):
return super(PublicItemManager,
self).get_query_set().filter(status=self.model.PUBLIC_STATUS)
i
.
4:
, : - , , ?
queryset=Item.**objects**.filter(creator=request.user)