带有不同链接模型类的Django模型reverse_name的方式

时间:2020-07-10 16:26:42

标签: python django django-models django-views django-templates

我在通过related_name访问不同类别的模型时遇到问题,我需要您的帮助来找到一个干净的解决方案,该解决方案使用很少的SQL查询并且易于扩展:

viewer.model

在我看来,我会遍历class RoundTripToDifferentPlaces(models.Model): price = models.FloatField(default=0) user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE) ... class PlaceVisit(models.Model): roundtrip = models.ForeignKey(RoundTripToDifferentPlaces, related_name="place_visit") individual_price = models.FloatField(default=0) name = models.CharField(max_length=31, null=True) street = models.CharField(max_length=31, null=True) creation_date = models.DateTimeField(auto_now_add=True) ... class RestaurantVisit(models.Model): place = models.OneToOneField(Job, on_delete=models.CASCADE, primary_key=True) Some more fields...about pricedetails class LibraryVisit(models.Model): place = models.OneToOneField(Job, on_delete=models.CASCADE, primary_key=True) Some more fields...about pricedetails ...many more subcategories of places and i will add more in the future ,并且需要获取相关模型的所有信息。 我希望可以在我的模型中:

RoundTripToDifferentPlaces

在我的视图/模板中:

class RestaurantVisit(models.Model):
        
     placevisit =  models.OneToOneField(Placevisit, related_name="specific_visit")
     roundtrip = models.OneToOneField(RoundTripToDifferentPlaces,  related_name="restaurant_visit")

     Some more fields...

 class LibraryVisit(models.Model):
        
     placevisit =  models.OneToOneField(Placevisit, related_name="specific_visit")
     roundtrip = models.OneToOneField(RoundTripToDifferentPlaces,  related_name="library_visit")

     Some more fields...

(RoundTrip只能访问一次,也可以有不同型号的访问次数)

似乎不允许即时通讯给不同的班级使用相同的 ... roundtrip = RoundTripToDifferentPlaces().objects.filter(user = request.user ) for visit in roundtrip.place_visit.all(): print(visit) print(visit.spefic_visit) #does not work #and e.g.: print(roundtrip.restaurant_visit) #works perfectly

是否有解决方法,或者使用通用密钥有可能吗?

0 个答案:

没有答案