On 13/09/2016 4:06 PM, Hanh Kieu wrote:
"So your Translation needs a FK to each of two different words. "
What would this look like?
class Translation(models.Model):
#word1 belongs to one word
word1 = models.ForeignKey(Word, on_delete=models.CASCADE,
related_name="Translation_word1")
#word2 belongs to another word
word2 = models.ForeignKey(Word, on_delete=models.CASCADE,
related_name="Translation_word2")
def __str__(self):
return "{0} - {1}".format(word1.language, word2.language)
On Monday, September 12, 2016 at 10:42:10 PM UTC-7, Mike Dewhirst wrote:
On 13/09/2016 3:02 PM, Hanh Kieu wrote:
> Hey guys, I'm creating a translation app that allows you to
translate
> from one object to the other. My translation model has two foreign
> keys that links to two words, and on the admin site I want the
Admin
> to be able to input two different words. The words they enter
should
> be saved as individual words, as well as a translation. However, it
> looks like this isn't possible at all in Django. I've been
trying so
> hard to read documentation but I am struggling. My Models look
like this:
>
> class Language(models.Model):
> Â Â Â language_text = models.CharField(max_length=200)
>
> Â Â Â def __str__(self):
> Â Â Â Â Â return self.language_text
>
>
> class Word(models.Model):
> Â Â Â language =
models.ForeignKey(Language,on_delete=models.CASCADE)
> Â Â Â word_text = models.CharField(max_length=200)
>
> Â Â Â def __str__(self):
> Â Â Â Â Â return self.word_text
>
>
> class Translation(models.Model):
> Â Â Â #word1 belongs to one word word1 =
models.OneToOneField(Word,on_delete=models.CASCADE,related_name="Translation_word1")
> Â Â Â #word2 belongs to another word word2 =
models.OneToOneField(Word,on_delete=models.CASCADE,related_name="Translation_word2")
Word has a FK to Language so a word exists in a language and
presumably
language_text will contain the name of the language like Ruby or
French etc.
So for that word to exist in another language, another word in that
other language must have a FK to that other language. So if you have
enough words in enough languages it would certainly be useful to
connect
them via a translation record.
But perhaps 1:1 is not what you want?
Maybe a particular word can be translated into two or three
languages?
If so, you need an intermediate table which connects any one word
with
many other words which belong in different languages. Sometimes
too, the
same word is in more than one language with the same meaning.
One translation record needs to make a single connection between
any two
word records. So your Translation needs a FK to each of two
different words.
Because you probably want to enter words for which you don't have the
translation immediately to hand, it might be worthwhile permitting
Null=True and blank=True.
Hth
> I want the admin page for Translation to be able to take in two
words
> and two languages and create a translation from them (rather than
> individually creating one word, then individually creating another
> word, then indiviudally creating a translation)
>
> I've tried using TranslationForm(models.ModelForm), however when I
> submit it gives me an error that there are NULL values for my
models
> :C. Help I am really lost and no one has been of help, I'm getting
> really frustrated with this aspect of django.
>
> If someone could take time to actually understand my problem and
help
> out that would be great please :C
>
> --
> You received this message because you are subscribed to the Google
> Groups "Django users" group.
> To unsubscribe from this group and stop receiving emails from
it, send
> an email to django-users...@googlegroups.com <javascript:>
> <mailto:django-users+unsubscr...@googlegroups.com <javascript:>>.
> To post to this group, send email to django...@googlegroups.com
<javascript:>
> <mailto:django...@googlegroups.com <javascript:>>.
> Visit this group at https://groups.google.com/group/django-users
<https://groups.google.com/group/django-users>.
> To view this discussion on the web visit
>
https://groups.google.com/d/msgid/django-users/9ab72b11-b7b3-4c1a-bf26-3ed4befb212f%40googlegroups.com
<https://groups.google.com/d/msgid/django-users/9ab72b11-b7b3-4c1a-bf26-3ed4befb212f%40googlegroups.com>
>
<https://groups.google.com/d/msgid/django-users/9ab72b11-b7b3-4c1a-bf26-3ed4befb212f%40googlegroups.com?utm_medium=email&utm_source=footer
<https://groups.google.com/d/msgid/django-users/9ab72b11-b7b3-4c1a-bf26-3ed4befb212f%40googlegroups.com?utm_medium=email&utm_source=footer>>.
> For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>.
--
You received this message because you are subscribed to the Google
Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to django-users+unsubscr...@googlegroups.com
<mailto:django-users+unsubscr...@googlegroups.com>.
To post to this group, send email to django-users@googlegroups.com
<mailto:django-users@googlegroups.com>.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/53110a43-f7e7-449c-9e74-2606a2d71854%40googlegroups.com
<https://groups.google.com/d/msgid/django-users/53110a43-f7e7-449c-9e74-2606a2d71854%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Django
users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/582366b4-3efd-6578-3f21-175514515f0e%40dewhirst.com.au.
For more options, visit https://groups.google.com/d/optout.