【发布时间】:2014-03-28 15:35:01
【问题描述】:
我需要实现以下内容:
应向用户显示一个表单,该表单将具有一个由属性名称组成的下拉选择菜单。有两种类型的属性:通用属性,即所有用户通用的属性和自定义属性,即每个用户在此之前定义的属性。模型看起来像这样:
class GeneralPropertyName(models.Model):
name = models.CharField(max_length=20)
class CustomPropertyName(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=20)
下拉菜单应包含所有常规属性,并且仅包含与用户相关的自定义属性。
第一个问题:如何定义这样的模型? 我需要:1. 以某种方式统一这两个属性,2. 仅从 CustomPropertyName 中获取与用户相关的那些项目
class SpecData(models.Model):
user = models.ForeignKey(User)
selection_title = models.CharField(max_length=20)
property = ForeignKey(GeneralPropertyName) ??UNIFY??? ForeignKey(CustomPropertyName)
第二,ModelForm有什么特别需要做的吗?
class SpecDataForm(ModelForm):
class Meta:
model = SpecData
第三个问题是视图中需要做什么?我需要使用内联表单集,因为我会有一些这样的动态表单。
def index(request):
user = User.objects.get(username=request.user.username)
specdataFormSet = inlineformset_factory(User, SpecData, form=SpecDataForm, extra=30)
...
specdata_formset = specdataFormSet(instance=user, prefix='specdata_set')
...
谢谢。
编辑:调整 juliocesar 的建议以包含表单集。不知何故,我收到以下错误消息:无法将关键字“属性”解析为字段。选项有:id、name、selection_title、user
def index(request):
user = User.objects.get(username=request.user.username)
user_specdata_form = UserSpecDataForm(user=user)
SpecdataFormSet = inlineformset_factory(User, SpecData, form=user_specdata_form, extra=30)
【问题讨论】:
标签: python django django-models django-forms foreign-keys