首先,我知道这个问题可能已经得到了回答,但我还有两个原因可以解决另一个问题:一个问题,显然是我的问题。苦苦于Django语法。其次,也许更重要的是,我不太确定我的数据库设置是否在这一点上有意义。所以,请耐心等待。
我在医院工作,而我每天的一个问题是,一种单一的药物通常会有很多不同的名字。所以,我认为练习一些Django是一项很好的任务。
基本上我想要两个数据库:一个只是简单地链接毒品和#34;昵称"它的实际名称。另一个将实际名称与一些其他信息相关联,这与维基页面的内容相似。
到目前为止,我提出了什么:
$('.crop-image').on('click', function () {
var img = $('.file-preview-image');
var canvas = $("<canvas>")[0];
canvas.width = img[0].naturalWidth;
canvas.height = img[0].naturalHeight;
var ctx = canvas.getContext("2d");
ctx.drawImage(img[0], 0, 0);
var url = canvas.toDataURL();
img.attr("src", url).Jcrop()
});
所以,我可以添加一个新的&#34; medsearch对象&#34;正好。但是,在添加&#34;类别&#34;在medwiki,我得到(django)django@ip:~/medwiki$ cat medsearch/models.py
from django.db import models
# Create your models here.
class medsearch(models.Model):
proprietary_name = models.CharField(max_length = 100, unique = True)
non_proprietary_name = models.CharField(max_length = 100, unique = True)
def __str__(self):
return self.non_proprietary_name
class medwiki(models.Model):
proprietary_name = models.ForeignKey('medisearch', on_delete=models.CASCADE)
cetegory = models.CharField(max_length = 255)
#wiki = models.TextField() etc.
def __str__(self):
return self.proprietary_name
(django)django@ip-:~/medwiki$
。据推测,因为医学研究中有多个关键词?因此我怀疑&#34; FroeignKey&#34;不适合这个应用程序,我知道还有其他方法可以链接Django中的数据库。但是,我不知道选择哪一个以及如何正确实施它。
希望你们中有些人有一些想法?
编辑:这是我到目前为止所提出的:__str__ returned non-string (type medsearch)
现在,我可以将不同的类别和不同的专有名称归因于一种药物。到目前为止哪个很好用。
当我知道专有的&#34;昵称&#34;时,查找非专有名称也是如此。
class Proprietary_name(models.Model):
proprietary_name = models.CharField(max_length = 100, unique = True)
def __str__(self):
return self.proprietary_name
class Category(models.Model):
category = models.CharField(max_length = 100, unique = True)
def __str__(self):
return self.category
class Mediwiki(models.Model):
proprietary_name = models.ManyToManyField(Proprietary_name)
non_proprietary_name = models.CharField(max_length = 100, unique = True)
category = models.ManyToManyField(Category)
wiki_page = models.TextField()
def __str__(self):
return self.non_proprietary_name
但是,当我知道non_proprietary_name时,我还想显示所有的private_names。我是否需要进一步更改数据库设计,还是我在这里缺少其他一些东西?
答案 0 :(得分:2)
这样可行:
return self.proprietary_name.proprietary_name
但那确实没有意义!
主要问题是您已将外键调用medsearch
,proprietary_name
。
第二个问题只是一个惯例。在Python(以及许多编程语言)中,类必须以大写字母开头。
以下情况会更好:
class MedSearch(models.Model):
proprietary_name = models.CharField(max_length=100, unique=True)
non_proprietary_name = models.CharField(max_length=100, unique=True)
def __str__(self):
return self.non_proprietary_name
class MedWiki(models.Model):
med_search = models.ForeignKey('MedSearch', on_delete=models.CASCADE, related_name='wikis')
cetegory = models.CharField(max_length = 255)
#wiki = models.TextField() etc.
def __str__(self):
return self.med_serach.proprietary_name
答案 1 :(得分:1)
如您所知,medwiki上的proprietary_name
字段是ForeignKey。您不能直接从__str__
方法返回该值,因为它需要返回一个字符串。您需要在返回之前将该值转换为字符串:使用medsearch实例的默认字符串表示形式:
return str(self.proprietary_name)
或选择要返回的特定字符串字段:
return self.proprietary_name.proprietary_name