假设我有两个模型:
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)
当我创建一个新的Thing时,我希望能够创建新的相关属性,如果它们尚不存在。
就像,在ipotetically“ThingForm.save()”中,我想迭代所有选定的属性,创建不存在的属性并将它们链接到新的东西
我怎样才能做到这一点?
答案 0 :(得分:1)
这是您可以创建新属性并将其链接到Thing的方法:
# 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)