جانغو:قائمة عكسية للعديد من العلاقة؟
-
07-07-2019 - |
سؤال
لدي نموذجان بسيطان فيmodels.py:الخدمة والمضيف.لدى Host.services علاقة m2m مع الخدمة.بمعنى آخر، يمتلك المضيف العديد من الخدمات ويمكن لخدمة واحدة أن تتواجد على عدة مضيفين؛M2M الأساسية.
models.py
class Service(models.Model):
servicename = models.CharField(max_length=50)
def __unicode__(self):
return self.servicename
class Admin:
pass
class Host(models.Model):
#...
hostname = models.CharField(max_length=200)
services = models.ManyToManyField(Service)
#...
def service(self):
return "\n".join([s.servicename for s in self.services.all()])
def __unicode__(self):
return self.hostname
class Admin:
pass
كيف يمكنني الحصول على مخرجات واحد إلى متعدد في واجهة الإدارة، مع فئة "الخدمة" كأساس (عكس متعدد إلى متعدد؟).
هل أحتاج إلى استخدام '_set.all()'؟
المحلول
يستخدم related_name
على الخدمات:
services = models.ManyToManyField(Service, related_name='hosts')
ومن ثم القيام به
service.hosts.all()
للحصول على المضيفين للخدمة.
نصائح أخرى
هذا الشيء يبدو و كأنه سينجز المطلوب:
class Service(models.Model):
servicename = models.CharField(max_length=50)
def hostname(self):
return "\n".join([s.hostname for s in self.hosts_services.all()])
def __unicode__(self):
return self.servicename
class Host(models.Model):
#...
services = models.ManyToManyField(Service, related_name='hosts_services')
#...
لا تنتمي إلى StackOverflow