0

わかりましたので、私の心はどろどろになります...

私は2つのモデルを持っています。1 つはカードの場所で、もう 1 つはカードの種類を保持します。特定のシャーシのカードを表示するビューとテンプレートがあります。私がうまくいかないように見えるのは、外部キー参照です。テンプレートに CardType.sName を表示したい。

私は愚かなことをしただけだと確信しています...

Models.py:

class CardLocation(models.Model):
  chassis = models.ForeignKey(Chassis)
  slot = models.CharField(max_length=20)
  slot_sub = models.CharField(max_length=20)
  CardType = models.ForeignKey(CardType)
  PartNum = models.CharField(max_length=200)
  ProdID = models.CharField(max_length=200)
  versID = models.CharField(max_length=200)
  serialNum = models.CharField(max_length=200)
  cleiCode = models.CharField(max_length=200)
  lastSeen = models.DateTimeField()
  isActive = models.BooleanField(default=0)
  def __unicode__(self):
    return self.slot 


class CardType(models.Model):
  sName = models.CharField(max_length=5)
  lName = models.CharField(max_length=200)
  description = models.CharField(max_length=200)
  def __unicode__(self):
    return self.sName

ビュー.py

class DetailView(generic.ListView):
  model = CardLocation
  template_name = 'chassis/detail.html'
  context_object_name = 'cardLoc'

  def get_queryset(self):
    #chassis_id = get_object_or_404(CardLocation, chassis_id__iexact=self.args[0])
    chassis_id = self.args[0]
    return CardLocation.objects.filter(chassis_id=chassis_id)

  def get_context_data(self, **kwargs):
    # Call the base implementation first to get a context
    context = super(DetailView, self).get_context_data(**kwargs)
    # Add in the
    context['chassisQ'] = Chassis.objects.get(id=self.args[0])
    #context['CardType'] = CardType.objects.order_by()
    return context

詳細.html

{% load staticfiles %}

<h2>
<table>
<tr><td>Name:</td><td>{{ chassisQ.name }}<td></tr>
<tr><td>Owner:</td><td>{{ chassisQ.owner }}<td></tr>
<tr><td>ip Adress:</td><td>{{ chassisQ.ipAddr }}<td></tr>
<tr><td>Last updated:</td><td>{{ chassisQ.lastSeen }}<td></tr>
</table>
</h2>

{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}

{% if cardLoc %}
<table border=1>
<tr><td>slot</td><td>Type</td><td>Part Number</td><td>Product ID/</td><td>Version ID</td><td>Serial Num</td><td>CLEI code</td></tr>
{% for card in cardLoc %}
<tr>
<td align="right">{{ card.slot }}</td>
<td>Type {{ card.cardtype__set.all.sName }} </td> <!-- DISPLAY sName HERE -->
<td>{{ card.PartNum }}</td>
<td align="right">{{ card.ProdID }}/</td>
<td align="left">{{ card.versID }}</td>
<td>{{ card.serialNum }}</td>
<td>{{ card.cleiCode }}</td>
</tr>
{% endfor %}
</table>
{% else %}
<p>No cards are available...</p>
{% endif %}
4

1 に答える 1

1

Aには、1 つだけではなく、(ForeignKey 関係であるため)Card多数あります。CardTypesあなたが持っている:

<td>Type {{ card.cardtype__set.all.sName }} </td>

CardTypesに関連するすべてをループする必要がありますCard

{% for card in cardLoc %}
...
    {% for cardtype in card.cardtype__set.all %}
        <td>Type {{ cardtype.sName }}</td>
    {% endfor %}
...
{% endfor %}
于 2013-05-21T20:17:32.253 に答える