簡體   English   中英

Django.db.models.field.CharField

[英]Django.db.models.field.CharField

我有一個 Django 項目,我正在嘗試拼湊一個非常基本的調查,需要輸入人口統計信息。 我已經通過管理站點收集了一些數據,以便讓我的 ListView 暫時工作。 不幸的是,我得到了一個奇怪的回應。 我將models.py構建為完整拼寫的下拉列表,然后為了保持較小,我在db 1-3個字符中進行了實際存儲。 當我得到我的列表視圖時,一個使用 1 個字符來存儲性別的視圖呈現為(<django.db.models.fields.CharField>,) ,我希望它呈現為“男性”的較大名稱, “女性”,“非二進制”。 但是,對於我的 2 和 3 個字符的種族和種族字段,它們將作為數據庫的實際存儲返回(即“AA”、“NHP”)。 我對 SQL 更滿意,所以我不反對為一個鍵添加一個表,因為現在只有 11 個條目,但它可能會添加更多的東西。

模型.py:

from django.db import models
from django.contrib import admin
from django.contrib.auth.models import User
# Create your models here.

class StuData(models.Model):
    id_num = models.IntegerField(primary_key=True)
    entry_date = models.DateTimeField('Date of Entry')
    MALE = 'm'
    FEMALE = 'f'
    OTHER = 'x'
    GENUNK = 'u'
    GENDER_SELECTIONS = [
        (MALE,'Male'),
        (FEMALE,'Female'),
        (OTHER,'Non-Binary'),
        (GENUNK,'Unknown'),
    ]
    gender = models.CharField(max_length=1, choices=GENDER_SELECTIONS),
    ## Build the selections for the race field
    AFR_RACE = 'AA'
    ASI_RACE = 'AS'
    WHI_RACE = 'WH'
    UNK_RACE = 'UN'
    RACE_SELECTIONS = [
        (AFR_RACE, 'African-American'),
        (ASI_RACE, 'Asian/Pacific Islander'),
        (WHI_RACE, 'White'),
        (UNK_RACE, 'Unknown Race'),
    ]
    race = models.CharField(max_length=2, choices=RACE_SELECTIONS)
    ## Build the selections for the ethnicity field
    HSP = 'HIS'
    NHP = 'NHP'
    UNK = 'UNE'
    ETHNICITY_SELECTIONS = [
        (HSP, 'Hispanic Origin'),
        (NHP, 'Not of Hispanic Origin'),
        (UNK, 'Unknown Ethnicity'),
    ]
    ethnicity = models.CharField(max_length=10, choices=ETHNICITY_SELECTIONS)
    stu_count = models.IntegerField(default=1)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

    class Meta:
        ordering = ["cad_num"]

    def __str__(self):
        return self.name

視圖.py:

from django.shortcuts import render
from django.http import HttpResponse
from mvstop.models import StuData
from django.views.generic.list import ListView
from django.views.generic.edit import UpdateView, CreateView
# Create your views here.

class StuDataList(ListView):
    model = StuData
    template = "myapp/studata_list.html"
    fields = ""
    paginate_by = 25

    def Meta():
        ordering = ['id_num']

    def __str__(self):
        return self.name

studata_list.html:

<!DOCTYPE html>
{% extends "./base.html" %}
{% block content %}
<h3>Most recent entries</h3>

<table id="studata">
    <tr>
        <th>ID Number</th>
        <th>Entry Date</th>
        <th>Gender</th>
        <th>Race</th>
        <th>Ethnicity</th>
        <th>Count</th>
    </tr>
    {% for stu in studata_list %}
    <tr>
    <tr>
        <td>{{ stu.id_num }}</td>
        <td>{{ stu.entry_date }}</td>
        <td>{{ stu.gender }}</td>
        <td>{{ stu.race }}</td>
        <td>{{ stu.ethnicity }}</td>
        <td>{{ stu.occupants }}</td>
    </tr>
    {% endfor %}
    </tr>
</table>
{% endblock %}

Django 有內置方法:

get_FIELD_display()

所以在你的模板中:

{% for stu in studata_list %}
    <tr>
    <tr>
        <td>{{ stu.id_num }}</td>
        <td>{{ stu.entry_date }}</td>
        <td>{{ stu.get_gender_display }}</td>
        <td>{{ stu.get_race_dispaly }}</td>
        <td>{{ stu.get_ethnicity_display }}</td>
        <td>{{ stu.occupants }}</td>
    </tr>
    {% endfor %}

暫無
暫無

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

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