Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何添加必须查找外键ID的条目_Python_Django_Django Models - Fatal编程技术网

Python 如何添加必须查找外键ID的条目

Python 如何添加必须查找外键ID的条目,python,django,django-models,Python,Django,Django Models,我在数据库中定义了多个位置。例如,假设我把米迈作为一个城市。我试图了解如何添加测量条目并在Location中引用城市迈阿密的Location ID。每个位置都有许多测量值 问题1我会怎么做 m = Measurement.objects.update_or_create( server = "Bubba", cpu_util = "100%", location = Location.objects.get(city="Miami") ) 或者这是

我在数据库中定义了多个位置。例如,假设我把米迈作为一个城市。我试图了解如何添加测量条目并在Location中引用城市迈阿密的Location ID。每个位置都有许多测量值

问题1我会怎么做

m = Measurement.objects.update_or_create(
    server      = "Bubba",
    cpu_util    = "100%",
    location    = Location.objects.get(city="Miami")
)
或者这是可能的吗

l = Location.objects.get(city="Miami")
m = Measurement.objects.update_or_create(
    server      = "Bubba",
    cpu_util    = "100%",
    location    = l.id
)
问题2:每个位置每天只能进行一次测量。如果在同一日期添加了两次度量值,那么我将使用update\u,或者如果值不同,那么创建将更新cpu\u util

问题1:两项工作都注意到了变化

m = Measurement.objects.update_or_create(
    server      = "Bubba",
    cpu_util    = "100%",
    location    = Location.objects.get(city="Miami")
)
Or (if this is possible?)

l = Location.objects.get(city="Miami")
m = Measurement.objects.update_or_create(
    server      = "Bubba",
    cpu_util    = "100%",
    location    = l
)
问题2:将唯一的_添加到您的模型中

class Measurement(models.Model):
    server      = models.CharField(('server'), max_length=10)
    cpu_util    = models.CharField(('cpu'), max_length=10)
    date        = models.DateField(default=timezone.now)
    location    = models.ForeignKey(Location, on_delete=models.CASCADE)

    class Meta:
        unique_together = ('location','date')

存储外键时,必须传递整个对象,以便传递测量中的位置对象table@AbiWaqas,对不起,我没听懂。谢谢。我认为这一独特的组合给了我很多问题。我遇到django.db.utils.IntegrityError:重复的键值违反了唯一约束度量值\u度量值\u位置\u id\u键值详细信息:键值位置\u id=47已存在。听起来您正在尝试为同一位置:日对添加第二个度量值
class Measurement(models.Model):
    server      = models.CharField(('server'), max_length=10)
    cpu_util    = models.CharField(('cpu'), max_length=10)
    date        = models.DateField(default=timezone.now)
    location    = models.ForeignKey(Location, on_delete=models.CASCADE)

    class Meta:
        unique_together = ('location','date')