Notice: file_put_contents(): Write of 1578 bytes failed with errno=28 No space left on device in /var/www/tgoop/post.php on line 50

Warning: file_put_contents(): Only 16384 of 17962 bytes written, possibly out of free disk space in /var/www/tgoop/post.php on line 50
جنگولرن@djangolearn_ir P.656
DJANGOLEARN_IR Telegram 656
Forwarded from سید فرندز / برنامه نویسی (Reza Amin)
#python
#django

Generic relations

جنریک ریلیشن در جنگو یک رابطه خاصی است که به شما اجازه می دهد یک رابطه (کلید خارجی) را با هر مدلی که در پروژه جنگویی خود نصب کرده اید برقرار کنید. وقتی شما می خواهید یک سیستمی را پیاده سازی کنید که بتواند با اشیای مختلفی ارتباط برقرار کند. ب
رای مثال، یک سیستم نظر دهی که بتواند نظرات را برای پست ها، پروفایل های کاربری، تصاویر و حتی نظرات دیگر ذخیره کند.

برای استفاده از generic relations در جنگو، شما باید از بسته contenttypes استفاده کنید که به شما اجازه می دهد از مدل ContentType استفاده کنید. این مدل اطلاعاتی درباره مدل های نصب شده در پروژه شما را ذخیره می کند و شما می توانید با استفاده از سه فیلد زیر یک رابطه عمومی با هر مدلی برقرار کنید:

یک فیلد ForeignKey که به مدل ContentType اشاره می کند (معمولا با نام content_type نامگذاری می شود).
یک فیلد PositiveIntegerField که کلید اصلی شیء مرتبط را ذخیره می کند (معمولا با نام object_id نامگذاری می شود).
یک فیلد GenericForeignKey که با استفاده از دو فیلد قبلی یک رابطه با شیء مرتبط ایجاد می کند (معمولا با نام content_object نامگذاری می شود).

مثلا فرض کنید ما یک مدل Comment داریم که می خواهیم بتواند به هر مدلی نظر دهد. ما می توانیم از generic relations برای این منظور استفاده کنیم:

from django.db import models
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType

class Comment(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
text = models.TextField()
date = models.DateTimeField(auto_now_add=True)

content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey()

خوب حالا اینطور می توانیم برای یک پست نظر ثبت کنیم :
post = Post.objects.get(pk=1) 

comment = Comment.objects.create(user=user, text="Nice post!", content_object=post)


اگر بخواهیم برای هر مدل دیگری هم که داریم مانند دوره آموزشی و مقاله یا هر مدل دیگری می توان از همین طریق نظر ثبت کرد .

@SEYED_BAX
👍6



tgoop.com/djangolearn_ir/656
Create:
Last Update:

#python
#django

Generic relations

جنریک ریلیشن در جنگو یک رابطه خاصی است که به شما اجازه می دهد یک رابطه (کلید خارجی) را با هر مدلی که در پروژه جنگویی خود نصب کرده اید برقرار کنید. وقتی شما می خواهید یک سیستمی را پیاده سازی کنید که بتواند با اشیای مختلفی ارتباط برقرار کند. ب
رای مثال، یک سیستم نظر دهی که بتواند نظرات را برای پست ها، پروفایل های کاربری، تصاویر و حتی نظرات دیگر ذخیره کند.

برای استفاده از generic relations در جنگو، شما باید از بسته contenttypes استفاده کنید که به شما اجازه می دهد از مدل ContentType استفاده کنید. این مدل اطلاعاتی درباره مدل های نصب شده در پروژه شما را ذخیره می کند و شما می توانید با استفاده از سه فیلد زیر یک رابطه عمومی با هر مدلی برقرار کنید:

یک فیلد ForeignKey که به مدل ContentType اشاره می کند (معمولا با نام content_type نامگذاری می شود).
یک فیلد PositiveIntegerField که کلید اصلی شیء مرتبط را ذخیره می کند (معمولا با نام object_id نامگذاری می شود).
یک فیلد GenericForeignKey که با استفاده از دو فیلد قبلی یک رابطه با شیء مرتبط ایجاد می کند (معمولا با نام content_object نامگذاری می شود).

مثلا فرض کنید ما یک مدل Comment داریم که می خواهیم بتواند به هر مدلی نظر دهد. ما می توانیم از generic relations برای این منظور استفاده کنیم:

from django.db import models
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType

class Comment(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
text = models.TextField()
date = models.DateTimeField(auto_now_add=True)

content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey()

خوب حالا اینطور می توانیم برای یک پست نظر ثبت کنیم :
post = Post.objects.get(pk=1) 

comment = Comment.objects.create(user=user, text="Nice post!", content_object=post)


اگر بخواهیم برای هر مدل دیگری هم که داریم مانند دوره آموزشی و مقاله یا هر مدل دیگری می توان از همین طریق نظر ثبت کرد .

@SEYED_BAX

BY جنگولرن


Share with your friend now:
tgoop.com/djangolearn_ir/656

View MORE
Open in Telegram


Telegram News

Date: |

Write your hashtags in the language of your target audience. How to Create a Private or Public Channel on Telegram? It’s easy to create a Telegram channel via desktop app or mobile app (for Android and iOS): Invite up to 200 users from your contacts to join your channel While some crypto traders move toward screaming as a coping mechanism, many mental health experts have argued that “scream therapy” is pseudoscience. Scientific research or no, it obviously feels good.
from us


Telegram جنگولرن
FROM American