Можно ли отобразить несколько объектов в подробном представлении? - PullRequest
0 голосов
/ 04 августа 2020

Я новичок в Django и публикую здесь, пожалуйста, извините за мое незнание и форматирование кода (перепутались, когда я вставлял). В представлении, где у меня есть две модели, я передаю идентификатор из объекта в модели 1 в подробное представление и возвращаю все объекты модели 2, где «execid» соответствует идентификатору модели 1. Однако в модели 2 будет несколько объектов, которые соответствуют идентификатору, переданному из модели 1.

Я получаю сообщение об ошибке «get () вернул более одного Exe c - он вернул 2!»

Это, как я понял, означает, что подробное представление не может передавать более одного объекта.

Мои представления:

class tradeListView(ListView):
 def get_queryset(self):
    return Trade.objects.filter(username=self.request.user)
 template_name = 'dashboard/trade_list.html'
 context_object_name = "trade"

class execDetailView(DetailView):
 template_name = "dashboard/exec_list.html"

 def get_queryset(self):
    return Exec.objects.filter(username=self.request.user)

 def get_object(self):
    id_ = self.kwargs.get("id")
    return get_object_or_404(Exec, execid=id_)

мои модели:

class Trade(models.Model):
exittime = models.DateTimeField(auto_now=False, auto_now_add=False, db_column='exittime')
entrytime = models.DateTimeField(auto_now=False, auto_now_add=False, db_column='entrytime')
duration = models.BigIntegerField(db_column='duration')
ticker = models.CharField(max_length=100, db_column='ticker')
direction = models.CharField(max_length=100, db_column='direction')
quantity = models.IntegerField(db_column='quantity', default=None)
entry = models.DecimalField(decimal_places=2, max_digits=100, db_column='entry')
exit = models.DecimalField(decimal_places=2, max_digits=100, db_column='exit')
cost = models.DecimalField(decimal_places=2, max_digits=100, db_column='cost', default=0)
percent = models.DecimalField(decimal_places=3, max_digits=100, db_column='percent', default=0)
profit = models.DecimalField(decimal_places=2, max_digits=100, db_column='profit')
username = models.CharField(max_length=100, db_column='username')

def get_absolute_url(self):
    return reverse('execdetail', kwargs={'pk': self.pk})


class Exec(models.Model):
exectime = models.DateTimeField(auto_now=False, auto_now_add=False, db_column='exectime')
ticker = models.CharField(max_length=100, db_column='ticker')
direction = models.CharField(max_length=100, db_column='direction')
quantity = models.IntegerField(db_column='quantity', default=None)
price = models.DecimalField(decimal_places=2, max_digits=100, db_column='price')
cost = models.DecimalField(decimal_places=2, max_digits=100, db_column='cost', default=0)
username = models.CharField(max_length=100, db_column='username')
execid = models.IntegerField(db_column='execid', default=None)

execid - это значение, которое должно соответствовать идентификатору торговой модели. все объекты exe c создаются с действующим идентификатором из торгового объекта *

Можно ли делать то, что я делаю, даже если это совершенно по-другому? Спасибо!

...