سؤال

أحاول إنجاز شيء أقرب إلى تويتر على موقع الويب الخاص بي، حيث يمكن للمستخدم واحد متابعة واحدة أخرى. أريد تحديد جميع سجلات المستخدم التي تتبع المستخدم مع معرف معين. نموذج علاقاتي متابعة تبدو وكأنها:

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 قد تكون مربكة بعض الشيء، لكن هذه هي الطريقة التي تقوم بها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top