• 1401/07/28

روش نمایش اجزای ManyToManyField در صفحه :

با سلام من می خوام تگ های محصول رو یکی یکی داخل یک کادر نشون بدم ولی وقتی حلقه for رو داخلش می زنم خطا میده و میگه ManyToManyField قابل نمایش نیست باید چکار کنم

  • 1401/07/28
  • ساعت 14:57

سلام خب برا این مورد many to many جواب نمیده دلیل دقیقشو نمیدونم بگم برا اینکار یه مدل بساز 

class ProductTags(models.Model):
    title = models.CharField(max_length=200)
    product = models.ForeignKey(Product, on_delete=models.CASCADE)

بعد برا راحتی کار که تو بخش اضافه/ویرایش محصول بتونی تگ هارو همونجا ویرایش کنی تو admin.py از stacked inline میتونی استفاده کنی به این صورت

class TagInLine(admin.StackedInline):
    model = models.ProductTags
    extra = 1

class ProductAdmin(admin.ModelAdmin):
    inlines = [TagInLine]

admin.site.register(models.Product,ProductAdmin)

برا for loop ام از دستور product.producttags_set.all میتونی استفاده کنی
 

اگه میخوای stacked in line رو تو ادمین شخصی سازی شده هم بیاری ( CREATEVIEW , EDITVEIW )
اینو مطالعه کن https://github.com/AndrewIngram/django-extra-views/


  • 1401/07/28
  • ساعت 16:20

ممنون


  • 1401/07/28
  • ساعت 16:32

خواهش میکنم 😉


  • 1401/07/28
  • ساعت 16:38

برای اینکه دو تا وارد کنیم میشه مثلا هم گالری تصاویر و هم تگ ها


  • 1401/07/28
  • ساعت 17:00

بله میشه,

class TagInLine(admin.StackedInline):
    model = models.ProductTags
    extra = 1
class GalleryInLine(admin.StackedInline):
    model = models.ProductGallery
    extra = 1

class ProductAdmin(admin.ModelAdmin):
    inlines = [TagInLine,GalleryInLine]

admin.site.register(models.Product,ProductAdmin)

  • 1401/07/28
  • ساعت 17:30

ممنون

 


  • 1401/07/29
  • ساعت 22:14

سلام دوست من

خوشحالم که مشکلتون برطرف شده

ممنونم از اقای اکبری بابت پاسخگوییشون

موفق باشین :)


logo-enamadlogo-samandehi