簡體   English   中英

Django下拉列表取決於模型?

[英]Django drop down list dependant on model?

我正在嘗試制作一個依賴於模型的下拉列表。 例如,我的應用程序有一個組織模型,當創建用戶時,會為他們設置一個組織。 組織可以有商店。 當登錄用戶訪問此下拉列表時,我想列出與用戶設置的組織相關聯的所有商店。 做這個的最好方式是什么?

模型.py


class Org(models.Model):

  name = models.CharField(blank=True, max_length=100)
  client_id = models.IntegerField()
  default_store = models.OneToOneField('Store',
    on_delete=models.SET_NULL,
    null=True,blank=True,
    related_name='+')

  def __str__(self):
    return self.name

class Store(models.Model):

  name = models.CharField(blank=True, max_length=100)
  org = models.ForeignKey('Org', on_delete=models.CASCADE)
  store_id = models.IntegerField(null=True, blank=True)

  def __str__(self):
    return self.name


class Profile(models.Model):
  user = models.OneToOneField(User, on_delete=models.CASCADE)
  org = models.ForeignKey('Org', 
    on_delete=models.SET_NULL,
    null=True, blank=True)

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

@receiver(post_save, sender=User)
def create_or_update_user_profile(sender, instance, created, **kwargs):
  if created:
    Profile.objects.create(user=instance)
  instance.profile.save()

我想將此下拉列表用作引導程序導航欄的一部分,其中我有其他下拉列表(關聯)。 這是我想使用它的導航條碼部分。 我知道它不完全符合我下面的要求,但這是我如何制作不同下拉列表的示例

            <div class="btn-group">
              <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                Reports
              </button>
              <div class="dropdown-menu">
                <a class="dropdown-item" href="{% url 'something' %}">Store_a1</a>
                <a class="dropdown-item" href="{% url 'something' %}">Store_a2</a>
                <a class="dropdown-item" href="{% url 'something' %}">Store_a3</a>

              </div>
            </div>

該頁面加載一個 iframe url,其中 store_id 作為查詢參數傳入,當前正在傳遞“default_store”的 store_id。 我在想我需要一個變量來表示“selected_store”之類的東西還是那些行? 當用戶單擊下拉列表中的商店之一時,我希望將所選商店的 store_id 傳遞給 iframe url 中的查詢參數並刷新頁面。

謝謝

根據您的模型,您應該能夠在模板中執行類似操作以遍歷用戶的所有商店

{% for store in request.user.profile.org.store_set.all %}
    <a class="dropdown-item" href="{% url 'something' store_id=store.id %}">{{ store }}</a>
{% endfor %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM