انضمام بسيط في django
-
13-09-2019 - |
سؤال
أحاول إنجاز شيء أقرب إلى تويتر على موقع الويب الخاص بي، حيث يمكن للمستخدم واحد متابعة واحدة أخرى. أريد تحديد جميع سجلات المستخدم التي تتبع المستخدم مع معرف معين. نموذج علاقاتي متابعة تبدو وكأنها:
class Following(models.Model):
user = models.ForeignKey(User, related_name='is_following')
followed = models.ForeignKey(User, related_name='is_followed')
وأنا أستخدم فئة مستخدم django.contrib.auth.models.
على افتراض أن لدي كائن مستخدم باسم "Myuser" يمثل يتبع الشخص، ما هو الاستعلام المناسب للحصول على الجميع متابعتهم؟
المحلول
إجابة mipadi مفقودة.all
'.
في رأي، الاستعلام
followers = my_user.is_followed.all()
إرجاع قائمة Following
الكائنات التي يتم فيها اتباع my_user. للحصول على المستخدم الذي يتبع من Following
هدف f
, ، استعمال f.user
إذا كان المتابعون في سياق القالب، فيمكنك القيام بما يلي.
{% for f in followers %}
{{ f.user }}
{% endfor %}
قد تجد وثائق django ل كثير إلى العديد من العلاقات مفيد.
نصائح أخرى
هذا هو المكان related_name
السمة تأتي في اللعب - إنها تتيح لك اتباع العلاقة إلى الوراء. لذلك، للحصول على جميع المستخدمين بعد مستخدم معين، كنت تستخدم my_user.is_followed
.
من الواضح أنك قد ترغب في إعادة تسمية سماتك لتعكس هذه العلاقات، منذ followed
و is_followed
قد تكون مربكة بعض الشيء، لكن هذه هي الطريقة التي تقوم بها.