【问题标题】:Adding ManyToMany related object on the fly in django在 django 中动态添加 ManyToMany 相关对象
【发布时间】:2015-06-01 17:21:02
【问题描述】:

假设我有两个这样的模型:

class Property(models.Model):
    name= models.CharField('Property name', max_length=200)
    slug = models.CharField(max_length=200)

    def save(self, *args, **kwargs):
        if not self.id:
            self.slug= slugify(self.name)
        super(Tag, self).save(*args, **kwargs)


class Thing(models.Model):
    name = models.CharField('Name',max_length=200)
    description = models.TextField('Description')
    pub_date = models.DateTimeField('Pub date',default=datetime.now())
    properties = models.ManyToManyField(Property, blank=True)

当我创建一个新事物时,我希望能够创建新的相关属性,如果它们不存在的话。

就像,在 ipotetically “ThingForm.save()”上,我想遍历所有选定的属性,创建不存在的属性并将它们链接到新事物

我怎样才能做到这一点?

【问题讨论】:

  • 我不清楚您的确切要求。您可以选择尚不存在的属性(按名称),然后创建属性并将这些新创建的属性分配给(可能是新的)事物,还是要将属性分配给未链接到该事物的事物以前?
  • 我认为OP的意思是前者。
  • 想不起来了,已经2年了,哈哈

标签: django python-2.7 django-models django-forms django-views


【解决方案1】:

这是您创建新属性并将其链接到事物之后的方法:

# assuming you have a list of names of the selected properties
selected_properties = ['name_1', 'name_2']

for prop_name in selected_properties:
    property, created = Property.objects.get_or_create(name=prop_name)
    # assuming you already have a Thing instance (thing) to attach the properties to ...
    thing.properties.add(property)

【讨论】:

    猜你喜欢
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 2011-06-24
    • 1970-01-01
    • 2020-09-03
    • 2010-12-18
    相关资源
    最近更新 更多