django: как объявить внешний ключ другого иностранного ключа

Вопрос:

У меня есть модель с:

class Material(models.Model):
name = models.CharField(_('name'), max_length=50)
description = models.TextField(_('description'), blank=True)
user = models.ForeignKey(User, default=None, blank= True, null = True)

class Essai_Temperature(models.Model):
name = models.ForeignKey(Material, verbose_name=_('name'))
nature_unit = models.ForeignKey(Property, verbose_name=_('category'))
user= models.ForeignKey(Material, related_name="user_set", default='0')

админ:

class Essai_TemperatureAdmin(admin.ModelAdmin):

def queryset(self, request):
qs = super(Essai_TemperatureAdmin, self).queryset(request)
current_user = request.user

if current_user.is_superuser:
return qs
else:
return qs.filter(user=current_user)

Как вернуть qs.filter(user = current_user)?

в Essai_Temperature user поля не работает

Как я могу получить доступ к полевому пользователю в Material?

Лучший ответ:

Вы думаете об этом совершенно неправильно. Внешний ключ от Essai – это материал, а не пользователь, поэтому вы должны назвать его material (и удалить related_name, что является неправильным и запутанным).

Теперь вы можете следить за отношениями:

qs.filter(material__user=current_user)

Оцените статью
TechArks.Ru
Добавить комментарий