另一个django新手问题:
我的django项目有一个客户模型,我想分享多个产品,每个产品都包含在一个应用程序中(例如移动,固定)。
目前,我在移动应用程序中拥有此客户模型:
# mobile/models.py
class Client(models.Model):
client_code = models.CharField(max_length=6, unique=True, db_index=True,)
company_name = models.CharField(max_length=200, blank=False, null=False)
slug = models.SlugField(db_index=True, unique=True, max_length=200)
def get_absolute_url(self):
return reverse('mobile:mobile_list_by_client',args=[self.slug])
绝对网址会向客户AAA001提供一条路径,例如:“127.0.0.1:8000/mobile/AAA001”。
这是移动应用中的移动产品型号:
# mobile.models.py
class MobileLineIdentifiers(models.Model):
client_code_1 = models.ForeignKey(Client, related_name = 'client_mobile' )
mtn = models.CharField(max_length=11, blank=False, null=False, db_index=True)
slug = models.SlugField(max_length=200, db_index=True, unique=True)
def get_absolute_url(self):
return reverse('mobile:mtn_detail', args=[self.id, self.slug])
我在固定应用中使用Client作为foriegn键:
# fixed/models.py
from mobile.models import Client
class FixedLineIdentifiers(models.Model):
client_code_3 = models.ForeignKey(Client, related_name = 'client_fixed' )
fixed_cli = models.CharField(max_length=11, blank=False, null=False, db_index=True)
def get_absolute_url(self):
return reverse('fixed:fixed_detail', args=[self.id, self.slug])
我可以使用get_absolute_url函数中的“if”语句在应用程序之间重复使用移动客户端模型吗?
# mobile/models.py
class Client(models.Model):
#....
def get_absolute_url(self):
# IF mobile:
return reverse('mobile:mobile_list_by_client',args=[self.slug])
# IF fixed:
return reverse('fixed:fixed_list_by_client',args=[self.slug])
我正在努力使用'if'语句引用。我如何区分移动和固定参考?
谢谢。
答案 0 :(得分:1)
您可以使用self.client_fixed
和related_name
向后关注外键。您使用这些名称是因为您在外键中设置了def get_absolute_url(self):
if self.client_mobile.exists():
return reverse('mobile:mobile_list_by_client',args=[self.slug])
elif self.client_fixed.exists():
return reverse('fixed:fixed_list_by_client',args=[self.slug])
else:
# return fallback
。有关详细信息,请参阅related objects reference文档:
{{1}}