Как получить данные в ManyToMany Django и визуализировать в view.py - PullRequest
0 голосов
/ 10 марта 2019

Я хочу получить данные в мой view.py, где покупатель выбирает конкретный рынок. Что означает, что покупатель может видеть только выбранный им рынок.

class Market(models.Model):
    name = models.CharField(max_length=30)
    address = models.TextField("Market Address")
    interval = models.PositiveIntegerField("Market Day Interval", default=5)
    startdate = models.DateField("Initial Date", auto_now=False, auto_now_add=False) 
    location = models.ForeignKey(Local, related_name='market_location', on_delete=models.CASCADE)
    desciption = models.TextField("Good Description")
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name



class Buyer(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
    market = models.ManyToManyField(Market, related_name='interested_markets')
    status = models.BooleanField("User Status", default=False)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)


    def __str__(self):
        return self.user.username

view.py

@login_required
@buyer_required
def welcome_buyer(request): 
    buyer = request.user.buyer
    market = buyer.interested_markets.all()


    return render(request, 'buyer/home.html', {
    'market': market
    }) 

1 Ответ

0 голосов
/ 10 марта 2019

Вы можете просто повторить это, используя объект покупателя:

for market in buyer.market_set.all()

или

markets = buyer.market_set.all()

, в вашем случае это будет:

markets = buyer.interested_markets_set.all()

или

markets = buyer.market # you should consider changing it's name to be plural to indicate that it's a list of objects like: buyer.markets

для получения более подробной информации читайте документы здесь: django многие ко многим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...