Постановка проблемы:
Я работаю над проектом Django, в котором у меня есть две модели: Product и Color. Модель Product имеет связь «многие ко многим» с моделью Color через поле Product_varients. Моя цель — отфильтровать доступные цвета в интерфейсе администратора Django на основе выбранного продукта. В частности, я хочу, чтобы при создании или редактировании цвета поле product_varients отображало только цвета, которые еще не связаны с этим продуктом Модели:
Вот соответствующие части моих моделей:
class ColorAdminForm(forms.ModelForm):
class Meta:
model = Color
fields = '__all__'
def __init__(self, *args, **kwargs):
super(ColorAdminForm, self).__init__(*args, **kwargs)
if self.instance.pk: # Editing an existing color
self.fields['product_varients'].queryset = Product.objects.exclude(
color=self.instance # Exclude products that already have this color
)
else: # Creating a new color
self.fields['product_varients'].queryset = Product.objects.all()
class ColorAdmin(admin.ModelAdmin):
form = ColorAdminForm
Возникла проблема:
Хотя логика фильтрации кажется правильной, я столкнулся со следующими проблемами:
Поле Product_varients отображается неправильно, когда я пытаюсь создать или изменить цвет. Здесь отображаются все продукты, а не исключаются те, которые уже связаны с цветом.
Я хочу убедиться, что при создании нового цвета отображаются только товары, с которыми еще не связан этот цвет.
Вопросы:
Как правильно фильтровать поле product_varients в администраторе Django, чтобы оно отображает только продукты, которые еще не связаны с выбранным цветом?
Есть ли лучший подход для реализации этой фильтрации в интерфейсе администратора Django?
[b]Постановка проблемы:[/b] Я работаю над проектом Django, в котором у меня есть две модели: Product и Color. Модель Product имеет связь «многие ко многим» с моделью Color через поле Product_varients. Моя цель — отфильтровать доступные цвета в интерфейсе администратора Django на основе выбранного продукта. В частности, я хочу, чтобы при создании или редактировании цвета поле product_varients отображало только цвета, которые еще не связаны с этим продуктом [b] Модели:[/b] Вот соответствующие части моих моделей: [code]from django.db import models from shortuuid.django.fields import ShortUUIDField
class Color(models.Model): coid = ShortUUIDField(length=10, max_length=100, prefix="col", alphabet="abcdefgh") name = models.CharField(max_length=20) product_varients = models.ManyToManyField('Product', related_name='color_variants', blank=True)
def __str__(self): return self.name
class Product(models.Model): pid = ShortUUIDField(length=10, max_length=100, prefix="prd", alphabet="abcdef") title = models.CharField(max_length=100, default="Apple") color = models.ManyToManyField(Color, blank=True)
def __str__(self): return self.title [/code] [b]Текущая реализация:[/b] В моем admin.py я реализовал специальную форму для Модель цвета для фильтрации поля Product_varients. Вот соответствующий код: [code]class ColorAdminForm(forms.ModelForm): class Meta: model = Color fields = '__all__'
if self.instance.pk: # Editing an existing color self.fields['product_varients'].queryset = Product.objects.exclude( color=self.instance # Exclude products that already have this color ) else: # Creating a new color self.fields['product_varients'].queryset = Product.objects.all()
class ColorAdmin(admin.ModelAdmin): form = ColorAdminForm [/code] [b]Возникла проблема:[/b] Хотя логика фильтрации кажется правильной, я столкнулся со следующими проблемами: [list] [*][b]Поле Product_varients отображается неправильно, когда я пытаюсь создать или изменить цвет.[/b] Здесь отображаются все продукты, а не исключаются те, которые уже связаны с цветом.
[*][b]Я хочу убедиться, что при создании нового цвета отображаются только товары, с которыми еще не связан этот цвет.[/b]
[/list] [b]Вопросы:[/b] [list] [*]Как правильно фильтровать поле product_varients в администраторе Django, чтобы оно отображает только продукты, которые еще не связаны с выбранным цветом?
[*]Есть ли лучший подход для реализации этой фильтрации в интерфейсе администратора Django?
Постановка проблемы:
Я работаю над проектом Django, в котором у меня есть две модели: Product и Color. Модель Product имеет связь «многие ко многим» с моделью Color через поле Product_varients. Моя цель — отфильтровать доступные цвета в интерфейсе...
Это связано с другим моим вопросом, который, как мне казалось, я решил. Тем не менее, применив фильтр по школе, я получаю любой проект, в котором любой человек принадлежит этой школе. Вместо этого я хочу фильтровать только проекты с лицами, которые...
Я работаю с Django Rest Framework, и мне нужно фильтровать связанные объекты в сериализаторе на основе пользовательских разрешений. В частности, я хочу условно включить или исключить определенные связанные объекты (в данном случае комментарии) в...
Я работаю над приложением Django, в котором у меня есть модель продукта со связью «многие ко многим» и моделью цвета. Я хочу отображать все цвета, связанные с вариантом продукта, на его странице сведений. Однако когда я нажимаю на определенный цвет...
Я работаю над приложением Django, в котором у меня есть модель продукта со связью «многие ко многим» и моделью цвета. Я хочу отображать все цвета, связанные с вариантом продукта, на его странице сведений. Однако когда я нажимаю на определенный цвет...