我有一个模型属性和产品,声明如下:Django的 - 建立多至2种型之间有很多的关系,而无需通过表使用表单集
class Attribute(models.Model):
value = models.TextField()
owner = models.ForeignKey(User)
type = models.ForeignKey(AttributeType)
image = ImageField(upload_to='attributes', null=True, blank=True)
related_attribute = models.ManyToManyField('self', blank = True, null = True)
class BaseWorkspace(models.Model):
name = models.CharField(max_length=255)
owner = models.ForeignKey(User)
attributes = models.ManyToManyField('Attribute', blank = True, null = True)
created = CreationDateTimeField()
modified = ModificationDateTimeField()
comments = models.ManyToManyField('Comment', blank = True, null = True)
sort_order = models.IntegerField(blank = True)
class Product(BaseWorkspace):
project = models.ForeignKey('Project', related_name='products')
如何使用表单集我建立的M-M的关系?我曾尝试模型表单集工厂是这样的:
AttributeFormset = modelformset_factory(Attribute, form=AttributeForm)
与通用鉴于这种功能:
def form_valid(self, form):
f = form.instance
f.sort_order = Product.default_sort_order()
f.owner = self.request.user
f.project = get_object_or_404(Project, pk=self.kwargs['pk'])
context = self.get_context_data()
attribute_form = context['attribute_form']
if attribute_form.is_valid():
self.object = form.save()
attribute_form.instance = self.object
attribute_form.save()
return HttpResponseRedirect(reverse(self.get_success_url()))
else:
return self.render_to_response(self.get_context_data(form=form))
,但我无法得到它的工作。有任何想法吗?
你知道哪一行失败吗?你能提供一个堆栈跟踪吗?它可能是调用通用视图方法的顺序 - 在form_valid()被调用时实际上是否存在一个context ['attribute_form']'变量? –
所以你只是想显示一个属性列表来分配产品?类似于用户表单在django管理员中显示组的方式? –
我想创建附加到产品的属性,全部以一种形式。 – yretuta