我希望隐藏用户的日期字段,但将其作为表单的一部分处理,以便我知道表单的发送日期。我还希望在Django admin下显示这个日期。
models.py
class Purchase(models.Model):
payment_type = models.ForeignKey('CardChoices', related_name='Payment Types')
card_name = models.CharField(max_length=26, default=None, validators=[alphanumeric_RE])
card_number = models.CharField(max_length=19, default=None)
security_code = models.IntegerField(max_length=3, default=None)
expiry_date = models.DateField(default=datetime.now)
date = models.DateField(auto_now=True, default=datetime.now)
def __str__(self):
return self.card_name
class Meta:
ordering = [ "date" ]
forms.py
class PurchaseForm(forms.ModelForm):
date = forms.DateField(widget=extras.SelectDateWidget, initial=date.today)
class Meta:
model = Purchase
fields = "__all__"
我尝试使用排除标记隐藏Meta下的字段,并且只在字段下添加我需要的字段,但它仍然显示所有字段。我尝试使用隐藏输入的forms.HiddenInput()
,但它也隐藏了管理员的值。虽然我发现这显示了日期,但似乎重复了两次:
def get_readonly_fields(self, request, obj=None): #duplicating entries
if obj:
return ["date"]
return self.readonly_fields
设置HiddenInput
后,表单会隐藏字段,但仍会要求输入有效日期。
如果我的理解是正确的,我也不能在表格上使用auto_now_add
。有什么建议吗?
答案 0 :(得分:0)
Django 1.11
import datetime
from django import forms
class PurchaseForm(forms.Form):
date = forms.DateTimeField(initial=datetime.datetime.now,
widget=forms.HiddenInput())