Python 如果我更改另一个字段,如何更改DjangoAdmin字段中的选项?

Python 如果我更改另一个字段,如何更改DjangoAdmin字段中的选项?,python,django,admin,models,Python,Django,Admin,Models,我正在为一家酒店创建一个db,我希望能够有一个字段,列出与上一个字段中选择的酒店相关的所有季节(FK) class PriceTable(models.Model): client = models.ForeignKey(Cliente, on_delete=models.CASCADE) year = models.ForeignKey(Ano, on_delete=models.CASCADE) hotel = models.ForeignKey(Hotel, on_

我正在为一家酒店创建一个db,我希望能够有一个字段,列出与上一个字段中选择的酒店相关的所有季节(FK)

class PriceTable(models.Model):
    client = models.ForeignKey(Cliente, on_delete=models.CASCADE)
    year = models.ForeignKey(Ano, on_delete=models.CASCADE)
    hotel = models.ForeignKey(Hotel, on_delete=models.CASCADE)
    season_price = models.ForeignKey(SeasonPrice, on_delete=models.CASCADE)

class SeasonPrice(models.Model):
    season = models.ForeignKey(Season, on_delete=models.CASCADE)

class Season(models.Model):
    name = models.CharField(max_length=200)
    date_in = models.DateField()
    date_end = models.DateField()
    hotel = models.ForeignKey(Hotel, on_delete=models.CASCADE)
在django管理页面中,我如何在季节价格中列出我刚刚选择的酒店外键的所有季节?
下面是一幅图片,可以更好地理解我想要完成的内容:

通常,我总是使用JQuery来解决这类问题。这是一个简单的例子,你必须改变必要的部分

说明:

Select a user in the page, and the article will change to the articles belong to the selected user.
URL.py

from TestDjango.testdb import testdb, getArticlesByUser
urlpatterns = [
    ......
    url(r'^testdb/$', testdb, name='testdb'),
    url(r'^getarticles/$', getArticlesByUser, name='get_art'),
    ......
]
testdb.py

from django.shortcuts import render
from Articles.models import Articles
from Users.models import Users

def testdb(request):
    context = {
        'users': Users.objects.all(),
    }
    return render(request, "Users/list.html", context)


def getArticlesByUser(request):
    # get parameters from page - Users/list.html
    user_id = request.GET.get('user_id', None)

    # get data from database by using "user_id"
    list_articles = Articles.objects.filter(user_id=user_id)

    str_alltitle = ""
    for item in list_articles:
        str_alltitle += '<option value="' + str(item.id) + '"> ' + item.title + ' </option> '

    # return a json response to the html
    from django.http import JsonResponse
    return JsonResponse({'articles': str_alltitle})
从django.exe导入渲染
从Articles.models导入文章
从用户。模型导入用户
def testdb(请求):
上下文={
“用户”:users.objects.all(),
}
返回呈现(请求“Users/list.html”,上下文)
def GetArticlesByser(请求):
#从page-Users/list.html获取参数
user\u id=request.GET.GET('user\u id',None)
#使用“用户id”从数据库获取数据
列表文章=文章.对象.过滤器(用户id=用户id)
str_alltitle=“”
对于列表中的项目\u文章:
str_alltitle+=''+项目.title+''
#将json响应返回到html
从django.http导入JsonResponse
返回JsonResponse({'articles':str_alltitle})
list.html

{% extends "base.html" %}

{% block title %}
    List Articles By User ID - User
{% endblock %}

{% block mainbody %}
<p>
    <span>User:</span>
    <select id="user" name="user_id">
        <option value="">---Empty---</option>
        {% for user in users %}
            <option value="{{ user.id }}" > {{ user.email }} </option>
        {% endfor %}
    </select>
</p>
<p>
    <span>Articles:</span>
    <select id="article" name="article_id"></select>
</p>
{% endblock %}

{% block scriptsection %}
<script type="text/javascript">
$('#user').bind('change', function () {

   $.ajax({
      url: '/getarticles/?user_id='+ this.value,
      type: 'GET',
      success: function (json) {
          $('#article').html(json['articles'])
      }
  });
});

</script>
{% endblock %}
{%extends“base.html”%}
{%block title%}
按用户ID列出文章-用户
{%endblock%}
{%block mainbody%}

用户:
---空的---
{users%%中的用户为%s}
{{user.email}
{%endfor%}

文章:

{%endblock%} {%block scriptsection%} $('#user').bind('change',function(){ $.ajax({ url:'/getarticles/?user_id='+this.value, 键入:“GET”, 成功:函数(json){ $('#article').html(json['articles'] } }); }); {%endblock%}

这是在我的计算机上运行的,我使用python 3.4和Django 1.10.4

是的,我想这解决了我的问题,我会试试看