Python 在Django中,我可以使用带有if语句的get absolute url引用其他应用程序吗? 我可以使用get_absolute_url和if语句引用其他应用程序吗?
另一个django新手问题: 我的django项目有一个客户模型,我想在多个产品中共享,每个产品都包含在一个应用程序中,例如移动、固定 目前,我在移动应用程序中有以下客户模型:Python 在Django中,我可以使用带有if语句的get absolute url引用其他应用程序吗? 我可以使用get_absolute_url和if语句引用其他应用程序吗?,python,django,Python,Django,另一个django新手问题: 我的django项目有一个客户模型,我想在多个产品中共享,每个产品都包含在一个应用程序中,例如移动、固定 目前,我在移动应用程序中有以下客户模型: # mobile/models.py class Client(models.Model): client_code = models.CharField(max_length=6, unique=True, db_index=True,) company_name = models.CharFiel
# 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])
# 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])
绝对url会生成指向客户AAA001的路径,例如:“127.0.0.1:8000/mobile/AAA001”
这是移动应用程序中的移动产品模型:
# 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])
# 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])
我在固定应用程序中将客户端作为外键:
# 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”语句跨应用程序重复使用移动客户端模型
我想实现的目标是:
我正在努力解决“如果”语句引用的问题。这里如何区分移动引用和固定引用
谢谢。您可以使用self.client\u mobile和self.client\u fixed向后跟随外键。使用这些名称是因为在外键中设置了相关的名称。有关更多信息,请参阅文档:
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
谢谢,这很有帮助。我只是看看客户同时拥有移动和固定产品的情况。看起来引用现在将引用满足条件的第一个“if”。请问有没有更好的方法让客户更具辨别力?是的,如果客户同时拥有移动和固定产品,上面的示例将使用mobile_list_by_client。我不知道你说的“更挑剔”是什么意思。get_absolute_url方法只能返回一个url,因此,如果客户端同时具有这两个url,则由您决定返回什么。谢谢,现在我可以了解如何更改应用程序和模型以利用这一点-可能最好拥有一个包含移动和固定线路所有权的客户端应用程序。