django - Django orm 查询访问值
问题描述
我有两个模型想从另一个模型中获得一个模型的价值。view.py 注释中对此进行了解释。
错误:
'Service' 对象没有属性 'business_profile'
模型.py
class Service(models.Model):
name = models.CharField(max_length=50)
image = models.ImageField(upload_to='image', blank = True)
#business_profile = models.ManyToManyField("BusinessProfile", blank=True, related_name="business_of_services")
def __str__(self):
return "Service - {}".format(self.name)
class BusinessProfile(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.CASCADE)
business_name = models.CharField(max_length=100, unique =True)
register_date = models.DateTimeField(default=timezone.now)
pan_number = models.IntegerField(unique=True)
pan_name = models.CharField(max_length=100)
address = models.TextField(max_length=200)
pincode = models.IntegerField()
city = models.CharField(max_length=50)
state = models.CharField(max_length=50)
service = models.ManyToManyField("Service", blank=True, related_name="services_of_business")
image = models.ManyToManyField("Service", related_name="image_of_business")
视图.py
service = Service.objects.all() #getting all the services
for i in service :
print(i.name) # working
# Now as services is also connected to businessprofile I want to print business_id for this service.
print(i.business_id) # something like this
解决方案
使用related_name。你可以做这样的事情
services = Service.objects.all()
for service in services:
print(service.name)
for profile in service.services_of_business.all():
print(profile.business_name) #or whatever you want to print or access
推荐阅读
- python - Numpy - 将双索引数组字符串表示形式转换为双索引数组
- php - 如何在 PHP 中使用 preg_match_all 从字符串返回 JavaScript?
- c# - 如何将 Jquery DataTables 添加到 asp.net 的 GridView
- firebase - Firebase 存储 REST API - 无效凭据(使用电子邮件/密码身份验证)
- python-3.x - 在 matplotlib 中使用 button_press_event 或 motion_notify_event 动态突出显示数据点
- javascript - 在没有 jQuery 的情况下更改滑块句柄颜色
- php - symfony 无法在 docker 上创建缓存目录
- kubernetes - GKE RollingUpdate 停机
- javascript - 正则表达式允许带有空格的字母数字并不允许某些特殊字符(<>&;)
- python - 如何在天空中找到卫星相对速度?