Django表单:表单提交后未保存字段
我有一个表单,它有2个模型选择字段和1个选择字段。表单提交后,ModelChoiceFields会保存,但ChoiceFields不会保存。未保存的字段是Django表单:表单提交后未保存字段,django,django-models,django-forms,Django,Django Models,Django Forms,我有一个表单,它有2个模型选择字段和1个选择字段。表单提交后,ModelChoiceFields会保存,但ChoiceFields不会保存。未保存的字段是条件字段 视图中的表单。py: class TradeCreateForm(LoginRequiredMixin, forms.Form): the_game_you_own = forms.ModelChoiceField( queryset=Game.objects.all(), to_field_n
条件
字段
视图中的表单。py:
class TradeCreateForm(LoginRequiredMixin, forms.Form):
the_game_you_own = forms.ModelChoiceField(
queryset=Game.objects.all(),
to_field_name='owned',
widget=autocomplete.ModelSelect2(
url='game-autocomplete',
attrs={
'data-minimum-input-length': 2, #res, sp
},
)
)
condition = forms.ChoiceField(choices=Trade.CONDITION_CHOICES, initial='OK - 1 or 2 small scratches', label='...', required=True)
the_game_you_want_in_exchange = forms.ModelChoiceField(
queryset=Game.objects.all(),
to_field_name='desired',
widget=autocomplete.ModelSelect2(
url='game-autocomplete',
attrs={
'data-minimum-input-length': 2,
},
)
)
class Trade(models.Model):
CONDITION_CHOICES = (
('Bad - A lot of scratches', 'Bad - A lot of scratches'),
('OK - 1 or 2 small scratches', 'OK - 1 or 2 small scratches'),
('Good - No scratches, 1 or 2 smudges', 'Good - No scratches, 1 or 2 smudges'),
('Perfect - No scratches, no smudges', 'Perfect - No scratches, no smudges'),
)
name = models.TextField() # Unrestricted text
created_date = models.DateTimeField(default=timezone.now)
owned_game = models.ForeignKey(Game, on_delete=models.CASCADE, related_name='owned_game', db_column='owned_game')
condition = models.CharField(max_length=50, choices=CONDITION_CHOICES)
desired_game = models.ForeignKey(Game, on_delete=models.CASCADE, related_name='desired_game', db_column='desired_game')
def get_trade_name(self):
return ''.join([self.user_who_posted.username, '(', timezone.now().strftime("%b %d, %Y %H:%M:%S UTC"), ')'])
def save(self, *args, **kwargs):
self.name = self.get_trade_name()
super(Trade, self).save(*args, **kwargs)
def __str__(self):
return self.name # return game name when game.objects.all() is called
型号。py:
class TradeCreateForm(LoginRequiredMixin, forms.Form):
the_game_you_own = forms.ModelChoiceField(
queryset=Game.objects.all(),
to_field_name='owned',
widget=autocomplete.ModelSelect2(
url='game-autocomplete',
attrs={
'data-minimum-input-length': 2, #res, sp
},
)
)
condition = forms.ChoiceField(choices=Trade.CONDITION_CHOICES, initial='OK - 1 or 2 small scratches', label='...', required=True)
the_game_you_want_in_exchange = forms.ModelChoiceField(
queryset=Game.objects.all(),
to_field_name='desired',
widget=autocomplete.ModelSelect2(
url='game-autocomplete',
attrs={
'data-minimum-input-length': 2,
},
)
)
class Trade(models.Model):
CONDITION_CHOICES = (
('Bad - A lot of scratches', 'Bad - A lot of scratches'),
('OK - 1 or 2 small scratches', 'OK - 1 or 2 small scratches'),
('Good - No scratches, 1 or 2 smudges', 'Good - No scratches, 1 or 2 smudges'),
('Perfect - No scratches, no smudges', 'Perfect - No scratches, no smudges'),
)
name = models.TextField() # Unrestricted text
created_date = models.DateTimeField(default=timezone.now)
owned_game = models.ForeignKey(Game, on_delete=models.CASCADE, related_name='owned_game', db_column='owned_game')
condition = models.CharField(max_length=50, choices=CONDITION_CHOICES)
desired_game = models.ForeignKey(Game, on_delete=models.CASCADE, related_name='desired_game', db_column='desired_game')
def get_trade_name(self):
return ''.join([self.user_who_posted.username, '(', timezone.now().strftime("%b %d, %Y %H:%M:%S UTC"), ')'])
def save(self, *args, **kwargs):
self.name = self.get_trade_name()
super(Trade, self).save(*args, **kwargs)
def __str__(self):
return self.name # return game name when game.objects.all() is called
我忘了我正在表单的action方法中调用的函数中处理这个对象的更新