如何处理2个字段类型到一个模型字段?

时间:2019-03-31 09:26:58

标签: django python-3.x django-models

我有一个模型字段,其中一些值是字体图标,其他是图像文件如何在一个字段中处理两种类型? 这些列表项是2种不同的类型,有些是fontawsome图标链接,有些是图像文件,我需要如何将它们放在模型字段中?

     <ul class="list-inline dev-icons">

              <li class="list-inline-item">
                <i class="fab fa-html5"></i>
              </li>
              <li class="list-inline-item">
                <i class="fab fa-css3-alt"></i>
              </li>
              <li class="list-inline-item">
                <i class="fab fa-js-square"></i>
              </li>
              <li class="list-inline-item">
                <i class="fab fa-sass"></i>
              </li>

              <li class="list-inline-item">
                <i class="fab fa-python"></i>
              </li>

              <li class="list-inline-item">
                <img class="img-fluid img-profile  mx-auto mb-2" src="{% static 'img/sql.png' %}">
              </li>
              <li class="list-inline-item">
                <img id="logo" src="{% static 'img/logo.png' %}">
              </li>
    </ul>

views.py:

    from django.shortcuts import render, redirect

    from django.views.generic.base import TemplateView

    from .models import *

    class homepage(TemplateView):
        template_name = "index.html"
        def get_context_data(self, **kwargs):
            context = super(homepage, self).get_context_data(**kwargs)
            context['About'] = About.objects.all()
            context['Experience'] = Experience.objects.order_by('date')
            return context

models.py:

    from django.db import models



    class About(models.Model):
        name         = models.CharField(max_length=200)
        address      = models.CharField(max_length=200)
        mobile       = models.CharField(max_length=200)
        email        = models.EmailField(blank=True)
        description  = models.TextField()
        #interests   = models.TextFileld()

        def __str__(self):
            return self.name


    class Experience(models.Model):
        title    = models.CharField(max_length=200)
        company  = models.CharField(max_length=200)
        date     = models.CharField(max_length=200)
        summery  = models.TextField()


        def __str__(self):
            return self.title

所以我需要创建技能模型,在其中可以添加技能

2 个答案:

答案 0 :(得分:0)

让我尝试找到您需要的东西。

1-您有一个模板(在问题下方编写的html代码),并且想要访问视图或模型中后端中的输入数据? 2-您有一个上面的模板,想要为其创建模型吗?

我没有添加评论的权限,所以我只是留下答案!

答案 1 :(得分:0)

我认为在基本视图中访问输入值将比正常方式难。因此它更好地使用view。它简单且没有任何限制!

首先,您需要在template.html中添加view.py标记,以便用户可以在其中输入值,并且可以访问<form>中的值。为了获得最佳选择,请使用<input>标签,并根据需要添加<form action="user/new_user/" method="post" > <input name="name_value" <input name="address_value"> <input name="mobile_value"> <input name="email_value"> <input name="description_value"> <button type=submit>submit form</button> </form> <div> <p>{{message}}</p> <p>{{boo}}</p> </div> 。 像这样的东西:

template.html:

URL=user/new_user/

当用户按下“提交”按钮页面时,将转到urls.py,因此请在import MyAppName.views urlpatterns = [ path('user/new_user/', MyAppName.views.AddUser), ] 中添加该网址:

function AddUser

以上网址会将我们传递给views.py中的views.py。现在我们在<input>中,我们想在这里访问<input>的值。所有request的价值都将包含在request.Post.get("name_of_input_tag")中,我们只需使用from django.shortcuts import render def AddUser(request): # attention all def in views.py need "request" and its necessary . inputted_name = request.Post.get("name_value") inputted_address= request.Post.get("address_value") inputted_mobile= request.Post.get("mobile_value") inputted_email= request.Post.get("email_value") inputted_description = request.Post.get("description_value") #now we have all inputted values from template , so do what you want! #for example adding new "About" About.objects.create( name=inputted_name, address=inputted_address, mobile=inputted_mobile, email=inputted_email, description=inputted_description ) # then we show some template with specific context context = { "message" : "new About created!", "boo" : "foo boo doo ", } return render {request , "template.html" ,context} 就可以轻松获取价值:

views.py

experience

现在您知道如何在模板中输入数据并在view中访问它们。因此,为了保存“技能”,您可以在request.Post.get("skill_value")的模型中添加新字段,并通过<input>在view.py中根据需要设置值。不要忘记在request.Post.get("input_name")中使用class Experience(models.Model): title = models.CharField(max_length=200,null=True,blank=True) company = models.CharField(max_length=200,null=True,blank=True) date = models.CharField(max_length=200,null=True,blank=True) summery = models.TextField(,null=True,blank=True) skill = models.TextField(null=True,blank=True) # add this field 的名字。

models.py:

{{1}}