是否可以添加self
- 我的意思是当前对象是ManyToManyField
?默认情况下如何将自我添加到ManyToManyField?
class City(models.Model):
name = models.CharField(max_length=80)
country = models.ForeignKey('Country')
close_cities = models.ManyToManyField('City',blank=True, related_name='close_cities_set')
如果我创建让我们说x = City.objects.create(...)
,我想x
是默认的close_cities
的一部分。
我找不到与此问题相关的任何内容。我试图覆盖create()
方法,但它没有奏效。
尝试之后,我决定创建一个信号,在创建实例后添加城市。不幸的是,这不起作用,但我不明白为什么。正在调用信号,条件if created
是True
(选中)。
@receiver(post_save,sender=myapp_models.City)
def add_self_into_many_to_many_field(sender, instance, created, **kwargs):
if created:
instance.close_cities.add(instance)
instance.save()
你知道问题在哪里吗?
如果我了解你,你想要将City'x'作为'close_city'添加到自身? –
是的。 x是城市。我希望x是x.close_cities的一部分 –
如果你想要一个表与自己有多对多的关系,你可能会有错误的设计。 – e4c5