【发布时间】:2012-09-17 09:05:42
【问题描述】:
我正在开发一个包含多个模型的应用程序。在我的 model.py 中的第二个模型中,它由 2-3 列组成。 char 字段,但在我的模板中,当我使用此 {{ form.billing_add }} 时,它不会在浏览器中显示任何文本输入
我的model.py文件是
从 django.db 导入模型 from django.contrib.auth.models 导入用户
class Customer(models.Model):
user =models.OneToOneField(User)
birthday =models.DateField()
website =models.CharField(max_length=50)
store =models.CharField(max_length=50)
welcomemail =models.CharField(max_length=50)
def __unicode__(self):
return self.user
class Customer_check_attributes(models.Model):
customer = models.ForeignKey(Customer)
billing_add =models.CharField(max_length=50)
shipping_add =models.CharField(max_length=50)
payment_method =models.CharField(max_length=50)
shipping_method =models.CharField(max_length=50)
reward_points =models.CharField(max_length=50)
和我的 form.py 文件一样
from django import forms
from django.contrib.auth.models import User
from django.forms import ModelForm
from customer_reg.models import Customer,Customer_check_attributes
class Registration_Form(ModelForm):
first_name = forms.CharField(label=(u'First Name'))
last_name = forms.CharField(label=(u'Last Name'))
username = forms.CharField(label=(u'User Name'))
email = forms.EmailField(label=(u'Email Address'))
password = forms.CharField(label=(u'Password'), widget=forms.PasswordInput(render_value=False))
class Meta:
model=Customer
exclude=('user',)
【问题讨论】:
-
您的表单没有
billing_add。 -
我的表单也没有生日和欢迎邮件,但它获得了我在浏览器模型中指定的所需字段,那么为什么这些问题出现在第二个模型中
-
Customer不知道Customer_check_attributes,因为关系是在Customer_check_attributes上定义的。因此,表单不能一直跟随到Customer_check_attributes字段。 -
您最好使用普通的
Form,设置您需要的所有字段,然后使用cleaned_data,并在表单is_valid()后自己创建模型。
标签: django django-models django-forms django-templates