首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django模型选择textField映射

Django模型选择textField映射
EN

Stack Overflow用户
提问于 2022-02-12 12:28:49
回答 1查看 274关注 0票数 2

我正在为自己构建一个网站,我正在从django管理更新我的项目,我想创建一个自定义字段,它是一个可选择的地图(标签颜色)和标签文本。

我想让它看起来像这样

这是我的模型

代码语言:javascript
复制
class Project(models.Model):
    projectTemplate = CloudinaryField('image')
    projectTitle = models.TextField(default="Title ")
    desc = models.TextField(default="not mentioned")
    projectLink = models.URLField(max_length=200, default="not mentioned")
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f'{self.projectTitle} - {self.desc[:15]} ..'

views.py

代码语言:javascript
复制
def projects(request):
    Projects = Project.objects.all()
    return render(request, 'devpage/projects.html',{'Projects': Projects})

这是我现在的DTL

代码语言:javascript
复制
{% for project in Projects %}
<div class="col">
    <div class="card shadow-sm">
        <img src="{{ project.projectTemplate.url }}" height="225" width="100%">
        <div class="card-body">
            <h6 class="text-center">
                {{ project.projectTitle }}
            </h6>
            <p class="card-text">{{ project.desc }}</p>
            <div class="mb-3">
            <span class="badge rounded-pill bg-secondary">Django</span>
                <span class="badge rounded-pill bg-success">Python</span>

            </div>
            <div class="d-flex justify-content-between align-items-center">
                <div class="btn-group">
                    <button type="button" class="btn btn-sm btn-warning btn-outline-secondary"><a
                            href="{{ project.projectLink }}" target="_blank" type="button"
                            class="btn">View</a></button>
                </div>
                <small class="text-muted">{{ project.created_at }}</small>
            </div>
        </div>
    </div>
</div>
{% endfor %}

我想要一个自定义模型字段,它选择标签颜色和相应的文本,我尝试使用json(字段名标记),但是它不是交互式的,比如{“主”:“django”,“成功”:“Python”,“第二天”:“webApp”}

这是JSON

代码语言:javascript
复制
//Inner for loop for tags
<div class="mb-3">
{% for color,text in Project.tags.items %}
    <span class="badge rounded-pill bg-{{ color }}">{{ text }}</span>
{% endfor %}
</div>
EN

回答 1

Stack Overflow用户

发布于 2022-02-14 18:34:19

假设您有一个Tag模型,它是一个ManyToManyField,您可以将颜色存储为模型的一个属性。

你的模特:

代码语言:javascript
复制
class Tag(models.Model):
    text = models.CharField(max_length=32)
    color = models.CharField(max_length=32, default="bg-success")

class Project(models.Model):
    ...
    tags = models.ManyToManyField(Tag)

你的模板:

代码语言:javascript
复制
{% for tag in Project.tags %}
    <span class="badge rounded-pill {{ tag.color }}">{{ tag.text }}</span>
{% endfor %}

对此的一些未来改进可能是预定义所有颜色的子类。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71091855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档