【发布时间】:2011-01-16 09:39:58
【问题描述】:
假设我使用默认的auth.models.User 加上我的自定义Profile 和Address 模型,如下所示:
class Profile(models.Model):
user = models.OneToOneField(User)
primary_phone = models.CharField(max_length=20)
address = models.ForeignKey("Address")
class Address(models.Model):
country = CountryField(default='CA')
province = CAProvinceField(default='BC')
city = models.CharField(max_length=80)
postal_code = models.CharField(max_length=6)
street1 = models.CharField(max_length=80)
street2 = models.CharField(max_length=80, blank=True, null=True)
street3 = models.CharField(max_length=80, blank=True, null=True)
现在我想创建一个注册表单。我可以基于User 创建一个ModelForm,但这不包括Profile 和Address 的字段(这是必需的)。那么构建此表单的最佳方法是什么?我到底应该使用ModelForm 吗?
此外,我将如何使用相同的表单来编辑复杂对象?我可以轻松地将 Profile 实例传回给它,它包含对必要 Address 和 Profile 对象的引用,但我如何让它为我填写字段?
【问题讨论】:
-
@Mark 在您的示例中,您在创建之前引用了
Address。您需要将其括在引号中才能执行此操作,或者如果您不想使用引号,请将Profile移动到Address下方。 -
@orokusaki:我想我从两个不同的位置粘贴了这些,否则我会出错。不知道我可以只使用引号。谢谢。
标签: django django-forms