Доступ к данным таблицы, созданным через множество полей в Django - PullRequest
0 голосов
/ 26 августа 2011

У меня есть файл этой модели, в котором пользователь может владеть любым количеством ферм, а администратор может создать плату и поставить ее на одну или несколько ферм. Проблема в том, что я хочу получить доступ к таблице, созданной через ManyToManyField в Расходы модель. Я хочу выбрать только те строки множества полей, которые относятся к одному пользователю.

предположим, что если администратор создал плату с идентификатором "3383" и выбрал пять ферм из MultiSelectWidget. В этих пяти фермах имя пользователя "Майк" имеет две фермы.Таблица ManyToManyField создаст 5 строк в своей таблице, включая 2 строки для пользовательских ферм "Майк". Я хочу получить доступ к этим 2 строкам, но не смог получить доступ к этим двум строкам.

Примечание: У меня просто есть идентификатор пользователя для поиска

Models.py

class Farm(models.Model):
    farmNo = models.CharField(max_length=100)

class FarmOwner(models.Model):
    owner = models.ForeignKey(User)
    farm = models.ManyToManyField(Farm)

class Charges(models.Model):
    chargeId = models.CharField(max_length=100)
    farms = models.ManyToManyField(Farm)

Пожалуйста, помогите

Спасибо

Ответы [ 2 ]

1 голос
/ 26 августа 2011

Учитывая, что идентификатор заряда равен 3383, а пользователь - mike, вы можете получить эти 2 связанные строки, используя этот

mikes_farm_list = FarmOwner.Objects.filter(owner="Mike").values_list('farms', flat=True)
Charges.Objects.filter(chargeId=3383, farms__in=mikes_farm_list)
0 голосов
/ 26 августа 2011
mike = Farm.objects.get(farmNo="Mike")
for charge in mike.charge_set.all():
    print charge.chargeId

Проверьте модель полевых документов для многих ко многим. Вы можете изменить имя атрибута "charge_set" на что-то другое ("заряды"), добавив related_name = "charge" в декларации M2M модели Charge.

...