在模型中定义属性,就像Django中其他模型的对象一样
是否可以像Django中其他数据模型的对象一样在数据模型中定义属性? 这里是风景区: models.py在模型中定义属性,就像Django中其他模型的对象一样,django,django-models,Django,Django Models,是否可以像Django中其他数据模型的对象一样在数据模型中定义属性? 这里是风景区: models.py class Inmueble(models.Model): calle = models.CharField(max_length=20, verbose_name="Calle") numero = models.CharField(max_length=6, verbose_name="Numero") piso = models.IntegerField(ver
class Inmueble(models.Model):
calle = models.CharField(max_length=20, verbose_name="Calle")
numero = models.CharField(max_length=6, verbose_name="Numero")
piso = models.IntegerField(verbose_name="Piso", blank=True, null=True)
galeria_id = models.OneToOneField(Galeria, verbose_name="Galería del Inmueble")
class Galeria(Gallery):
nombre = models.CharField(max_length=30, verbose_name="Nombre")
要点是:每次创建Inmueble对象时,我都需要自动创建一个新的Galeria对象。提前谢谢
Analía.
也许吧
这就是答案。也许吧
这就是答案。有两种方法可以解决这个问题:
save()
方法- 这是一个有点去耦合。如果以后更改或删除Galeria,代码不会中断
- postsave的信号处理程序包含一个布尔值,用于指示是否正在创建模型。从技术上讲,您可以通过检查模型是否设置了.id来实现model save()中的相同功能,但在我看来,该信号是一个更干净的解决方案
有两种方法可以处理此问题:
save()
方法- 这是一个有点去耦合。如果以后更改或删除Galeria,代码不会中断
- postsave的信号处理程序包含一个布尔值,用于指示是否正在创建模型。从技术上讲,您可以通过检查模型是否设置了.id来实现model save()中的相同功能,但在我看来,该信号是一个更干净的解决方案
from django.db.models.signals import post_save
class Galeria(Gallery):
inmueble_id = models.ForeignKey(Inmueble)
def inmueble_postsave(sender, instance, created, **kwargs):
if created:
instance = Galeria.objects.create(inmueble_id=instance, title=instance.calle+' '+instance.numero, title_slug=instance.calle+' '+instance.numero)
instance.save()
post_save.connect(inmueble_postsave, sender=Inmueble, dispatch_uid='galeria.inmueble_postsave')
最后,我做到了:
from django.db.models.signals import post_save
class Galeria(Gallery):
inmueble_id = models.ForeignKey(Inmueble)
def inmueble_postsave(sender, instance, created, **kwargs):
if created:
instance = Galeria.objects.create(inmueble_id=instance, title=instance.calle+' '+instance.numero, title_slug=instance.calle+' '+instance.numero)
instance.save()
post_save.connect(inmueble_postsave, sender=Inmueble, dispatch_uid='galeria.inmueble_postsave')
from django.db.models.signals import post_save
class Galeria(Gallery):
inmueble_id = models.ForeignKey(Inmueble)
def inmueble_postsave(sender, instance, created, **kwargs):
if created:
instance = Galeria.objects.create(inmueble_id=instance, title=instance.calle+' '+instance.numero, title_slug=instance.calle+' '+instance.numero)
instance.save()
post_save.connect(inmueble_postsave, sender=Inmueble, dispatch_uid='galeria.inmueble_postsave')