• 1400/02/24

فیلتر کردن مدل :

یه مدل دارم که با رابطه ManyToManyField به مدل دیگه ای ارتباط داره و میخوام فیلترش کنم

یه مدل cat دارم که به شکل زیر هست

class ArticleCat(models.Model):
  title = models.CharField(max_length=100, verbose_name='عنوان')
  parent = models.ForeignKey('self', on_delete=models.SET_NULL, related_name='child')
    

و به مدل article به شکل زیر وصل شده.

class Article(models.Model):
    title = models.CharField(max_length=120, verbose_name='عنوان')
    cat = models.ManyToManyField(ArticleCat, related_name="cat_child", blank=True)
    

 

میخوام تو پنل ادمین زمانی که اقدام به افزودن مقاله کردم فقط دسته های فرزند رو برام لیست کنه نه دسته های والد رو.

نه میدونم چجوری انجامش بدم نه میدونم کجا این فیلتر  رو انجام بدم  فایل model یا فایل admin ؟

 

 

  • 1400/02/24
  • ساعت 23:38

سلام وقت بخیر

به این شکل عمل کنید :

limit_choices_to={"active": "False"}
cat = models.ManyToManyField(
				ArticleCat, 
				related_name="cat_child", 
				blank=True,
				limit_choices_to={"parent": "Null"})

توی این خط هم وقتی از SET_NULL  استفاده کردید برای اینکه به مشکل نخوره null رو true بزارید :

parent = models.ForeignKey(
				'self', 
				on_delete=models.SET_NULL, 
				related_name='child',
				null=True
				)

  • 1400/02/27
  • ساعت 01:03

limit_choices_to = {'child':None}


  • 1400/03/02
  • ساعت 23:36

ممنون ، با یه کم تغیر کار کرد.

 

class ArticleCat(Common):

    parent = models.ForeignKey(
        'self',
        on_delete=models.SET_NULL,
        blank=True,
        null=True,
        limit_choices_to={'parent': None},
        related_name='children')

 limit_choices_to={'parent': None}


logo-samandehi